#include <iostream>
#include <cmath>
using namespace std;

// 才干基函数
double phi4(double y) {
    return tanh(y);
}

// 导数 d(phi4)/dy
double d_phi4_dy(double y) {
    return 1.0 - pow(tanh(y), 2);
}

// 反解 y 从 p
double inverse_y_from_p(double p) {
    if (p <= 0 || p >= 1) {
        cerr << "Error: p must be in (0, 1)" << endl;
        return 0.0;
    }
    double sqrt_val = sqrt(1.0 - p);
    return atanh(sqrt_val); // 使用反双曲正切函数
}

// 勒让德变换
double legendreTransform(double p) {
    double y = inverse_y_from_p(p);
    return p * y - phi4(y);
}

int main() {
    double p = 0.5; // 输入动量 p
    cout << "勒让德变换结果: " << legendreTransform(p) << endl;
    return 0;
}